#define _CRT_SECURE_NO_WARNINGS 1

//#include<stdio.h>
//
//int main() {
//	int n, m;
//	int arr1[10][10] = { 0 };
//	int arr2[10][10] = { 0 };
//	scanf("%d%d", &n, &m);
//	for (int i = 0; i < n; i++) {
//		for (int j = 0; j < m; j++) {
//
//			scanf("%d", &arr1[i][j]);
//		}
//	}
//	for (int i = 0; i < n; i++) {
//		for (int j = 0; j < m; j++) {
//			scanf("%d", &arr2[i][j]);
//		}
//
//	}
//	//int flag = 1;
//	for (int i = 0; i < n; i++) {
//		for (int j = 0; j < m; j++) {
//			if (*(arr1[i] + j) != *(arr2[i] + j)) {
//				printf("No\n");
//				return 0;
//			}
//		}
//	}
//	printf("Yes\n");
//	return 0;
//}
//
//#include<stdio.h>
//
//int main() {
//	int n, x;
//	int arr[50] = { 0 };
//	int count = 0;
//	scanf("%d", &n);
//	for (int i = 0; i < n; i++) {
//		scanf("%d", &arr[i]);
//	}
//	scanf("%d", &x);
//	for (int i = 0; i < n; i++) {
//		if (arr[i] == x) {
//			count++;
//			int j = i;
//			while (j < n) {
//				arr[j] = arr[j + 1];
//				j++;
//			}
//			i--;
//		}
//	}
//	for (int i = 0; i < n - count; i++) {
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}
//
//#include<stdio.h>
//
//int main() {
//	int year, month;
//	scanf("%d%d", &year, &month);
//	if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
//		printf("31\n");
//	}
//	else if (month == 4 || month == 6 || month == 8 || month == 9 || month == 11) {
//		printf("30\n");
//	}
//	else {
//		if ((year % 4==0 && year % 100 != 0) || year % 400 == 0) {
//			printf("29\n");
//		}
//		else {
//			printf("28\n");
//		}
//	}
//	return 0;
//}
//
//#include<stdio.h>
//
//int main() {
//	double price;
//	int month, day, have;
//	scanf("%lf %d %d %d", &price,&month, &day, &have);
//	if (month == 11 && day == 11) {
//		price *= 0.7;
//		if (have == 1) {
//			price -= 50;
//		}
//	}
//	else   {
//		price *= 0.8;
//		if (have == 1) {
//			price -= 50;
//		}
//	}
//	if (price >= 0) {
//		printf("%.2lf\n", price);
//	}
//	else {
//		printf("0\n");
//	}
//	return 0;
//}
//
//#include<stdio.h>
//
//int main() {
//	int arr[50] = { 0 };
//	int x = 0,n;
//	scanf("%d", &n);
//	for (int i = 0; i < n; i++) {
//		scanf("%d", &arr[i]);
//	}
//	scanf("%d", &x);
//	int j = 0;
//	for (int i = 0; i < n; i++) {
//		if (arr[i] != x) {
//			arr[j] = arr[i];
//			j++;
//		}
//	}
//	for (int i = 0; i < j; i++) {
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}
//
//
//#include<stdio.h>
//
//int main() {
//	int a = 1, b = 2, c = 3, d = 4;
//	if (a == 8 && b == 8 || c == 5 && d == 7) {
//
//	}
//	return 0;
//}
//
//#include<stdio.h>
//
//int main() {
//	int year;
//	scanf("%d", &year);
//	if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
//		printf("Yes\n");
//	}
//	else
//		printf("No\n");
//	return 0;
//}

#include<stdio.h>

int main() {
	int year, month;
	while (scanf("%d%d", &year, &month) != EOF) {
		int day[] = {31,28,31,30,31,30,31,31,30,31,30,31};
		if (month != 2) {
			printf("%d\n", day[month - 1]);
		}
		else {
			if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
				printf("%d\n", day[month] + 1);
			}
			else {
				printf("%d\n", day[month]);
			}
		}
	}
	return 0;
}